﻿#pragma once
#include "IVideoRenderView.h"
#include "../utils/SDLRenderUtil.h"

class SDLVideoRenderView : public IVideoRenderView
{
public:
  /*  static SDLVideoRenderView* Get()
    {
        static SDLVideoRenderView svrv;
        return &svrv;
    }*/
    static SDLVideoRenderView* Create()
    {
        return new SDLVideoRenderView();
    }
    void Close() override;
    ////////////////////////////////////////////////
    /// 初始化渲染窗口 线程安全
    /// @para w 窗口宽度
    /// @para h 窗口高度
    /// @para fmt 绘制的像素格式
    /// @para win_id 窗口句柄，如果为空，创建新窗口
    /// @return 是否创建成功
    bool Init(int w, int h,
        IVideoRenderView::PixFormat fmt,
        void* win_id = nullptr) override;

    //////////////////////////////////////////////////
    /// 渲染图像 线程安全
    ///@para data 渲染的二进制数据
    /// linesize<=0 就根据宽度和像素格式自动算出大小
    /// @return 渲染是否成功
    bool Draw(char* data) override;
    bool IsExit() override;
    bool DrawFrame(AVFrame* frame);
private:
    SDLRenderUtil* renderUtil;
    char* nv12_data_cache = nullptr;

};
